package com.yingside.clazz.pattern;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
    public static void main(String[] args) {
        //String str = "Abcdef";
        //使用表达式进行匹配
        //表达式一般都是匹配字符串
        //String reg = "lovo";

        //简单来说，匹配的表达式，一般都是一些要求
        //比如要求字符串必须全部是英文，而且长度有限制
        //[] 表示[]取一个字符[a-z]就表示小写字母的任意一个
        //[a-zA-Z]就表示字母的任意一个，不论大小写
        //String reg = "[a-zA-Z]"; //这个规则是。任意的一个字母
        //{} 元字符的修饰符，表示{}前面的字符要重复多少次
        //{1,}表示至少一次，至n次，这就表示前面的字符可以出现1次到任意多次
        //String reg = "[a-zA-Z]{1,}";

        //要求一个字符串，第一个字符必须是数字，后面的字符必须是英文字母，最少3次，最多5次
        //{n,m} 就表示最少n次，最多m次
        //String reg = "[0-9][a-zA-Z]{3,5}";

        //{n}表示字符只能出现n次
        //输入用户名,用户名首字母必须大写，
        // 用户名最少6个，最多12个字符
        //String reg = "[A-Z][a-z]{5,11}";

        //输入密码，密码首字母必须大写，
        // 其他字符可以是字母，数字或者下划线，长度6-12
        //String reg = "[A-Z]\\w{5,11}";

        //验证邮箱，邮箱名可以是字母，数字或者下划线，长度6-12
        //邮箱的后缀也可以是字母，数字或者下划线
        //但是必须是xxx.xx这种形式
        //注意 . 表示任意字符，所以如果要想定死，就是一个.
        // 那么必须转义 \.
//        String str = "asds_12ADS@dsf.gh";
//        String reg = "\\w{6,12}@\\w{3}\\.\\w{2}";

        //验证字符串
        //首字母必须大写，但是可以没有，也可以有，但只出现一次
        //后面跟上数字，至少出现1次，
        //然后是小写字母，可以没有，也可以很多

//        String str = "A3df";
////        String reg = "[A-Z]?\\d+[a-z]*";

        //验证联通电话号码
        //联通电话130，131，132，155，157，171，172，173
       //String str = "13598785903";
       //String reg = "1((3[012])|(5[57])|(7[123]))\\d{8}";
        //String reg = "1[357][012357]\\d{8}";

        //验证字符串
        //首字母可以是数字字母下划线，可以出现0-1次
        //后面是数字，可以是0-1次
        //然后是数字字母和下划线0-n次
        //然后是符号@
        //然后是字母3次
        //然后是.
//        String str = "@rty.";
//        String reg = "\\w?\\d?\\w*@[a-zA-Z]{3}\\.";


//        String str = "ABC";
//        String reg = "[a-z]*";

        //^表示必须以什么字符开始
        //$表示必须以前一个字符结束
        String str = "哈哈jdsfdsfsdfsdsqwwefdd言asdas";
        String reg = "^\\w*言$";


        //对表达式进行编译
        Pattern pattern = Pattern.compile(reg);
        //开启不区分大小写的验证
        //Pattern pattern = Pattern.compile(reg,Pattern.CASE_INSENSITIVE);
        //编译后的表达式对字符串进行验证
        Matcher matcher = pattern.matcher(str);
        //最后根据matcher的方法来判读是否验证成功
        //一般有两个方法
        //全匹配-所有的字符必须全部符合表达式的要求才会返回true
        if(matcher.matches()){
            System.out.println("全匹配验证成功");
        }
        else{
            System.out.println("全匹配验证失败");
        }
        //部分匹配-只要有字符串符合部分表达式的要求就返回true
        //一般情况下，java使用的都是matches全部匹配
//        if(matcher.find()){
//            System.out.println("部分匹配验证成功");
//        }else{
//            System.out.println("失败");
//        }





    }
}
